// Generated from Xn.g4 by ANTLR 4.9.3

package com.telrob.antlr.role;

import org.antlr.v4.runtime.tree.ParseTreeVisitor;

/**
 * This interface defines a complete generic visitor for a parse tree produced
 * by {@link XnParser}.
 *
 * @param <T> The return type of the visit operation. Use {@link Void} for
 * operations with no return type.
 */
public interface XnVisitor<T> extends ParseTreeVisitor<T> {
	/**
	 * Visit a parse tree produced by {@link XnParser#prog}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitProg(XnParser.ProgContext ctx);
	/**
	 * Visit a parse tree produced by {@link XnParser#progamBody}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitProgamBody(XnParser.ProgamBodyContext ctx);
	/**
	 * Visit a parse tree produced by {@link XnParser#declareBlock}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDeclareBlock(XnParser.DeclareBlockContext ctx);
	/**
	 * Visit a parse tree produced by {@link XnParser#functionBlock}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFunctionBlock(XnParser.FunctionBlockContext ctx);
	/**
	 * Visit a parse tree produced by {@link XnParser#functionHander}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFunctionHander(XnParser.FunctionHanderContext ctx);
	/**
	 * Visit a parse tree produced by {@link XnParser#functionParam}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFunctionParam(XnParser.FunctionParamContext ctx);
	/**
	 * Visit a parse tree produced by {@link XnParser#functionParamDeclare}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFunctionParamDeclare(XnParser.FunctionParamDeclareContext ctx);
	/**
	 * Visit a parse tree produced by {@link XnParser#functionBody}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFunctionBody(XnParser.FunctionBodyContext ctx);
	/**
	 * Visit a parse tree produced by {@link XnParser#calculateBody}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitCalculateBody(XnParser.CalculateBodyContext ctx);
	/**
	 * Visit a parse tree produced by {@link XnParser#functionCall}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFunctionCall(XnParser.FunctionCallContext ctx);
	/**
	 * Visit a parse tree produced by {@link XnParser#functionCallParam}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitFunctionCallParam(XnParser.FunctionCallParamContext ctx);
	/**
	 * Visit a parse tree produced by {@link XnParser#whileBlock}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitWhileBlock(XnParser.WhileBlockContext ctx);
	/**
	 * Visit a parse tree produced by {@link XnParser#doWhileBlock}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDoWhileBlock(XnParser.DoWhileBlockContext ctx);
	/**
	 * Visit a parse tree produced by {@link XnParser#forBlock}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitForBlock(XnParser.ForBlockContext ctx);
	/**
	 * Visit a parse tree produced by {@link XnParser#forConditionBlock}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitForConditionBlock(XnParser.ForConditionBlockContext ctx);
	/**
	 * Visit a parse tree produced by {@link XnParser#conditionIfBlock}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitConditionIfBlock(XnParser.ConditionIfBlockContext ctx);
	/**
	 * Visit a parse tree produced by {@link XnParser#ifBlock}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitIfBlock(XnParser.IfBlockContext ctx);
	/**
	 * Visit a parse tree produced by {@link XnParser#elseIfBlock}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitElseIfBlock(XnParser.ElseIfBlockContext ctx);
	/**
	 * Visit a parse tree produced by {@link XnParser#elseBlock}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitElseBlock(XnParser.ElseBlockContext ctx);
	/**
	 * Visit a parse tree produced by {@link XnParser#conditionBlock}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitConditionBlock(XnParser.ConditionBlockContext ctx);
	/**
	 * Visit a parse tree produced by {@link XnParser#condition}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitCondition(XnParser.ConditionContext ctx);
	/**
	 * Visit a parse tree produced by {@link XnParser#declare}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitDeclare(XnParser.DeclareContext ctx);
	/**
	 * Visit a parse tree produced by {@link XnParser#assignmentDeclare}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAssignmentDeclare(XnParser.AssignmentDeclareContext ctx);
	/**
	 * Visit a parse tree produced by {@link XnParser#assignment}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitAssignment(XnParser.AssignmentContext ctx);
	/**
	 * Visit a parse tree produced by {@link XnParser#expression}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitExpression(XnParser.ExpressionContext ctx);
	/**
	 * Visit a parse tree produced by {@link XnParser#expressionType}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitExpressionType(XnParser.ExpressionTypeContext ctx);
	/**
	 * Visit a parse tree produced by {@link XnParser#baseType}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitBaseType(XnParser.BaseTypeContext ctx);
	/**
	 * Visit a parse tree produced by {@link XnParser#string}.
	 * @param ctx the parse tree
	 * @return the visitor result
	 */
	T visitString(XnParser.StringContext ctx);
}